/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import entidades.Usuario;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import negocio.UsuarioInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class CambioClaveBean implements Rol{
    
    @EJB
    private UsuarioInterface usuarioInterface;
    //Hacer el import de entidades dado que no se esta sugiriendo en netbeans
    //
    private Usuario usuario;
    
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    
    private String claveActual;
    private String claveNueva;
    private String confirmarClaveNueva;
    private String claveActualBD;
    
    public CambioClaveBean(){
       
    }
    
    @PostConstruct
    public void InicializarVariables() {
        usuario = new Usuario();
        try {
            InitialContext ctx = new InitialContext();
//            estudianteInterface = (EstudianteInterface) ctx.lookup("EstudianteEJB");
//            listaEstudiantes = estudianteInterface.listarEstudiantes();
      } catch (NamingException ex) {
            Logger.getLogger(CambioClaveBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    
    }
    
    @Override
    public void CambiarClave() {
        claveActualBD = sessionBean.getUsuarioSession().getClave();
        if(claveActual.equals(claveActualBD)){
            
            if(claveNueva.equals(confirmarClaveNueva)){
                
                usuario.setIdUsuario(sessionBean.getUsuarioSession().getIdUsuario());
                usuario.setIdRol(sessionBean.getUsuarioSession().getIdRol());
                usuario.setIdEstado(sessionBean.getUsuarioSession().getIdEstado());
                usuario.setClave(claveNueva);
                usuarioInterface.actualizarClave(usuario);
                FacesMessage facesMessage = new FacesMessage("Se ha cambiado la clave con éxito. Por favor cierre sesion e ingrese con su nueva clave");
                FacesContext.getCurrentInstance().addMessage(null, facesMessage);
                limpiarCampos();
                
            }else{
                FacesMessage facesMessage = new FacesMessage("La clave nueva no coincide con la confirmacion");
                FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            }
            
        }else{
            FacesMessage facesMessage = new FacesMessage("Contraseña actual no valida");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        }
        
    }
    
    public void limpiarCampos(){
        claveNueva = "";
        confirmarClaveNueva = "";
        claveActual = "";
    }

    @Override
    public void ActualizarDatos() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void AprobarFormato() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void cargarEntidad() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getClaveActual() {
        return claveActual;
    }

    public void setClaveActual(String claveActual) {
        this.claveActual = claveActual;
    }

    public String getClaveNueva() {
        return claveNueva;
    }

    public void setClaveNueva(String claveNueva) {
        this.claveNueva = claveNueva;
    }

    public String getConfirmarClaveNueva() {
        return confirmarClaveNueva;
    }

    public void setConfirmarClaveNueva(String confirmarClaveNueva) {
        this.confirmarClaveNueva = confirmarClaveNueva;
    }

    public String getClaveActualBD() {
        return claveActualBD;
    }

    public void setClaveActualBD(String claveActualBD) {
        this.claveActualBD = claveActualBD;
    }
    
    
    
    
}
